package com.shujujiegou.队列.java模拟双端队列.使用集合实现;

import java.util.LinkedList;

/**
 * LinkedList 是一个继承于AbstractSequentialList的双向链表。它也可以被当作堆栈、队列或双端队列进行操作。
 * LinkedList 实现 List 接口，能对它进行队列操作。
 * LinkedList 实现 Deque 接口，即能将LinkedList当作双端队列使用。
 * LinkedList 实现了Cloneable接口，即覆盖了函数clone()，能克隆。
 * LinkedList 实现java.io.Serializable接口，这意味着LinkedList支持序列化，能通过序列化去传输。
 * LinkedList 是非同步的。
 */
public class DoubleQueue {
    private LinkedList<Object> queue;

    public DoubleQueue() {
        queue = new LinkedList<Object>();
    }

    public void insertFirst(Object value) {
        this.queue.add(value);
    }

    public void insertLast(Object value) {
        this.queue.addLast(value);
    }

    public Object removeFirst() {
        return this.queue.removeFirst();
    }

    public Object removeLast() {
        return this.removeLast();
    }

    public int size() {
        return this.queue.size();
    }

    public Boolean isEmpty() {
        return this.queue.isEmpty();
    }

    // 查看队尾
    public Object peekLast() {
        return this.queue.peekLast();
    }

    // 查看队头
    public Object peekFirst() {
        return this.queue.peekFirst();
    }
}
